Introdução

Análise exploratória de dados do RottenTomatoes sobre o ator Jake Gyllenhaal. O código empregado na extração dos dados aqui analizados e a descrição de como o usar encontra-se no repositório origem deste relatório.

  • Entradas que não contêm dados sobre bilheteria foram ignoradas.




Data Overview

import_data("jake_gyllenhaal") 
filmes <- read_imported_data()
filmes %>% 
    glimpse()
## Observations: 20
## Variables: 5
## $ avaliacao  <int> 92, 68, 73, 52, 73, 59, 82, 85, 92, 49, 35, 64, 47,...
## $ filme      <chr> "Stronger", "Life", "Nocturnal Animals", "Demolitio...
## $ papel      <chr> "Jeff Bauman", "David Jordan", "Tony HastingsEdward...
## $ bilheteria <dbl> 4.2, 30.2, 10.7, 1.7, 46.6, 42.4, 61.0, 39.1, 54.7,...
## $ ano        <int> 2017, 2017, 2016, 2016, 2015, 2015, 2013, 2012, 201...

Bilheteria

  • Dados de bilheteria se referem ao arrecadamento dentro dos Estados Unidos.
p <- filmes %>%
    ggplot(aes(x = ano, 
               y = bilheteria,
               text = paste("Filme:",filme,
                            "\nBilheteria:",
                            bilheteria,"m",
                            "\nAno:",ano))) + 
    geom_point(size = 4, color = paleta[1]) +
    labs(y = "Bilheteria", x = "Ano de lançamento")

ggplotly(p, tooltip = "text") %>%
    layout(autosize = F)
  • Entre os filmes em que Jake atuou um foge aos outros em termos de faturamento, o filme “The Day After Tomorrow” lançado em 2004.

  • É possível perceber uma tendência de queda no faturamento dos filmes em que Jake atuou após 2013.

filmes %>% 
    ggplot(aes(x = bilheteria)) + 
    geom_histogram(aes(y=(..count..)/sum(..count..)),binwidth = 10, boundary = 0, 
                   fill = "grey", color = "black") + 
    geom_rug(size = .5) +
    scale_x_continuous(breaks=seq(0,200,20)) +
    labs(y = "Frequência Relativa", x = "Bilheteria")

  • Vemos claramente a disparidade entre “The Day After Tomorrow” e os outros filmes.

  • Nenhum valor fora do domínio de valores esperado, e.g. valores negativos.

p <- filmes %>% 
    ggplot(aes(x = "",
               y = bilheteria,
               label = filme,
               text = paste("Filme:",filme,
                            "\nBilheteria:",
                            bilheteria,"m"))) + 
    geom_jitter(width = .05, alpha = .3, size = 3) + 
    labs(x = "", y="Bilheteria")

ggplotly(p, tooltip="text") %>% 
    layout(autosize = F)
  • Separar os filmes entre os de bilheteria abaixo e acima de 50 milhões parece uma abordagem razoável.

  • “The Day After Tomorrow” aparenta formar um exército de um filme só. O que nos daria 3 grupos.

Avaliação

p <- filmes %>% 
    ggplot(aes(x = ano, 
               y = avaliacao,
                text = paste("Filme:",filme,
                            "\nAvaliação:",
                            avaliacao,
                            "\nAno:",ano))) + 
    geom_point(size = 4, color = paleta[1])  +
    scale_y_continuous(limits = c(0, 100)) +
    labs(y = "Avaliação RT", x = "Ano de lançamento")

ggplotly(p, tooltip = "text") %>%
    layout(autosize = F)
  • Entre 2005 e 2010 Jake participou de uma série de filmes em particular que não agradou os críticos
  • Não aparenta haver uma tendência particularmente clara em razão do ano de lançamento.
filmes %>% 
    ggplot(aes(x = avaliacao)) + 
    geom_histogram(aes(y=(..count..)/sum(..count..)),binwidth = 10, boundary = 0, 
                   fill = paleta[3], color = "black") + 
    geom_rug(size = .5) +
    scale_x_continuous(breaks=seq(0,100,10)) +
    labs(y = "Frequência Relativa", x = "Avaliação RT")

  • É possível perceber uma quantidade considerável de filmes com notas acima de 80.

  • Nenhum valor fora do domínio de valores esperado, e.g. valores negativos.

p <- filmes %>% 
    ggplot(aes(x = "",
               y = avaliacao,
               text = paste(
                    "Filme:",filme,
                    "\nAvaliação:",avaliacao))) + 
    geom_jitter(width = .05, alpha = .3, size = 3) + 
    labs(x = "", y="Avaliação RT")

ggplotly(p, tooltip = "text") %>% 
    layout(autosize = F)
  • Intuitivamente três grupos surgem:
    • Os filmes com avaliação acima de 80
    • Os filmes com avaliação entre 55 e 70
    • Os filmes com avaliação abaixo de 55




Agrupamento hierárquico



Uma dimensão


Bilheteria

agrupamento_h = filmes %>% 
    mutate(nome = paste0(filme, " (bil=", bilheteria, ")")) %>% 
    as.data.frame() %>% 
    column_to_rownames("filme") %>% 
    select(bilheteria) %>%
    dist(method = "euclidian") %>% 
    hclust(method = "centroid")

ggdendrogram(agrupamento_h, rotate = T, size = 2, theme_dendro = F) +
    labs(y = "Dissimilaridade", x = "", title = "Dendrograma") +
    geom_hline(aes(yintercept = c(20,30), color=c("4 grupos","3 grupos"))) +
    scale_colour_manual(name="#Grupos",
    values=c("#56B4E9", "#FF9999"))

  • Em termos de Dendograma a divisão em quatro grupos assim como a divisão em 3 grupos parecem ser apropriadas, dado que o aumento de dissimilaridade de 4 para 3 grupos não aparentar ser substancial.
  • Corte feito para 4 grupos
atribuicoes = get_grupos(agrupamento_h, num_grupos = 1:6)

atribuicoes = atribuicoes %>% 
    left_join(filmes, by = c("label" = "filme"))

atribuicoes %>% 
    ggplot(aes(x = "Filmes", y = bilheteria, colour = grupo)) + 
    geom_jitter(width = .02, height = 0, size = 1.6, alpha = .6) + 
    facet_wrap(~ paste(k, " grupos")) + 
    scale_color_brewer(palette = "Dark2") +
    labs(y = "Bilheteria (milhões)", x = "", title = "Agrupamento por Bilheteria")

  • A divisão em 4 grupos parece ser mais apropriada que a divisão em 3 grupos.
    • O cluster de filmes na base do gráfico aparenta exigir um grupo próprio (Na divisão em 4 grupos o grupo mencionado seria o grupo 1).
k_escolhido = 4

m <- list(l = 220)

p <-atribuicoes %>% 
    filter(k == k_escolhido) %>% 
    ggplot(aes(x = reorder(label, bilheteria),
               y = bilheteria,
               colour = grupo,
               text = paste(
                    "Filme:", reorder(label, bilheteria),
                    "\nAvaliação:", bilheteria,
                    "\nGrupo:", grupo))) + 
    geom_jitter(width = .02, height = 0, size = 3, alpha = .6) + 
    facet_wrap(~ paste(k, " grupos")) + 
    scale_color_brewer(palette = "Dark2") + 
    labs(x = "", y = "Avaliação RT") + 
    coord_flip()

ggplotly(p,tooltip = "text") %>%
    layout(autosize = F, margin = m)
  • The Day After Tomorrow exigiu um grupo para si, como era esperado.


Avaliação

agrupamento_h = filmes %>% 
    mutate(nome = paste0(filme, " (av=", avaliacao, ")")) %>% 
    as.data.frame() %>% 
    column_to_rownames("filme") %>% 
    select(avaliacao) %>%
    dist(method = "euclidian") %>% 
    hclust(method = "ward.D")

ggdendrogram(agrupamento_h, rotate = T, size = 2, theme_dendro = F) +
    labs(y = "Dissimilaridade", x = "", title = "Dendrograma") +
    geom_hline(aes(yintercept = 30),color="red")

  • Em termos de Dendograma a divisão em três grupos parece ser a mais apropriada, dado que o aumento da dissimilaridade passa a ser substancial quando passamos de 3 para 2 grupos.
atribuicoes = get_grupos(agrupamento_h, num_grupos = 1:6)

atribuicoes = atribuicoes %>% 
    left_join(filmes, by = c("label" = "filme"))

atribuicoes %>% 
    ggplot(aes(x = "Filmes", y = avaliacao, colour = grupo)) + 
    geom_jitter(width = .02, height = 0, size = 1.6, alpha = .6) + 
    facet_wrap(~ paste(k, " grupos")) + 
    scale_color_brewer(palette = "Dark2") +
    labs(y = "Avaliação RT", x = "", title = "Agrupamento por Avaliação")

  • Visualmente a divisão em três grupos parece de fato ser apropriada, o que está em acordo com o dendrograma.
k_escolhido = 3

m <- list(l = 220)

p <-atribuicoes %>% 
    filter(k == k_escolhido) %>% 
    ggplot(aes(x = reorder(label, avaliacao),
               y = avaliacao,
               colour = grupo,
               text = paste(
                    "Filme:", reorder(label, avaliacao),
                    "\nAvaliação:", avaliacao,
                    "\nGrupo:", grupo))) + 
    geom_jitter(width = .02, height = 0, size = 3, alpha = .6) + 
    facet_wrap(~ paste(k, " grupos")) + 
    scale_color_brewer(palette = "Dark2") + 
    labs(x = "", y = "Avaliação RT") + 
    coord_flip()

ggplotly(p,tooltip = "text") %>%
    layout(autosize = F, margin = m)
  • Discutivelmente, Prince of Persia: The Sands of Time poderia exigir um grupo para si próprio.


Duas dimensões


Quantos grupos devemos escolher?


agrupamento_h_2d = filmes %>%
   mutate(bilheteria = log10(bilheteria)) %>%
   mutate_at(vars("avaliacao", "bilheteria"), funs(scale)) %>%
   column_to_rownames("filme") %>%
   select("avaliacao", "bilheteria") %>%
   dist(method = "euclidean") %>%
   hclust(method = "ward.D")

ggdendrogram(agrupamento_h_2d, rotate = TRUE, theme_dendro = F) +
    labs(y = "Dissimilaridade", x = "", title = "Dendrograma") +
    geom_hline(aes(yintercept = 4),color="red")

  • Passar de 4 para 3 grupos representa pouca variação em termos de dissimilaridade
  • Passar de 3 para 2 grupos apresenta um aumento relativo de dissimilaridade substancial, portanto de 6 até 3 grupos parece ser uma boa escolha em termos de dendrograma.
filmes2 <- filmes %>%
    mutate(bilheteria = log10(bilheteria))

plota_hclusts_2d(agrupamento_h_2d,
                filmes2,
                c("avaliacao", "bilheteria"),
                linkage_method = "ward.D", 
                ks = 1:6,
                palette = "Dark2") + 
    scale_y_log10() +
    labs(y = "Bilheteria", x = "Avaliação", title = "Agrupamento com Duas Dimensões")

  • A escolha por 5 grupos parece ser apropriada, por refletir tanto questões de bilheteria como de avaliação. Optaremos por 5 grupos pelas seguintes razões (Grupos mencionados no agrupamento de 5 grupos):
    • Os \(\color{magenta}{\text{4 filmes de melhores avaliações}}\) estão bem próximos uns dos outros e sugerem um grupo.
    • Os \(\color{#7C3F7C}{\text{3 filmes de baixas bilheterias e baixas avaliações}}\) estão bem distantes do resto dos filmes e sugerem um grupo.
    • Os \(\color{#16A085}{\text{4 filmes de baixa bilheteria e boas avaliações}}\) estão bem próximos uns dos outros e sugerem um grupo.
    • Os \(\color{green}{\text{2 filmes de altíssima bilheteria e baixíssima avaliação}}\) estão bem distantes do resto dos filmes e sugerem um grupo.
    • Os \(\color{#CF5300}{\text{6 filmes centrais/medianos em termos de bilheteria/avaliação}}\) estão bem próximos uns dos outros e sugerem um grupo.
atribuicoes = get_grupos(agrupamento_h_2d, num_grupos = 1:6)

atribuicoes = atribuicoes %>% 
    filter(k == 5) %>%
    mutate(filme = label) %>% 
    left_join(filmes, by = "filme")

p <- atribuicoes %>%
    ggplot(aes(x = avaliacao,
               y = bilheteria,
               colour = grupo,
               text = paste(
                    "Filme:", filme,
                    "\nBilheteria:", bilheteria,"m\n",
                    "Avaliação:", avaliacao))) + 
    geom_jitter(width = .02, height = 0, size = 3, alpha = .6) + 
    facet_wrap(~ paste(k, " grupos")) + 
    scale_color_brewer(palette = "Dark2") +
    scale_y_log10() +
    labs(y = "Bilheteria", x = "Avaliação RT")


ggplotly(p, tooltip = "text") %>%
    layout(autosize = F)




Quais os nomes dos grupos?


\(\color{#16A085}{\text{Grupo 1 (Oddball):}}\) Filmes em geral bem recebidos pela crítica porém mal recebidos pelo público, o que se reflete no seu baixo arrecadamento. O nome Oddball parte do interese de pessoas que se consideram excêntricas em buscarem filmes nesse perfil para revalidarem o sentimento de exclusividade.


\(\color{#CF5300}{\text{Grupo 2 (Sessão da Tarde):}}\) Filmes em geral não tão bem recebidos pela crítica e mais formulaicos. Em termos de bilheteria a maior parte deles foi baixa mas o filme se pagou.O nome Sessã da Tarde parte da ideia de que filmes mais formulaicos e inexpressivos em termos de bilheteria como os do grupo povoarem esse horário da tv brasileira.


\(\color{#7C3F7C}{\text{Grupo 3 (Demolition of a budget):}}\) Filmes em geral mal recebidos pela crítica e pelo público, o que se reflete no seu baixo arrecadamento e avaliações. O nome do grupo parte do baxissimo rendimento dos filmes em termos financeiros, a “demolição” do dinheiro investido na produção do filme.


\(\color{magenta}{\text{Grupo 4 (Broke Records and Awards):}}\) Filmes aclamados pela crítica e de faturamento decente ou de sucesso, os filmes desse grupo são de tom mais sério tratando de assuntos significativos e geradores de controvérsia (assassinatos em série verídicos, não heterossexualidade, terrorismo.. ). O nome do grupo é um trocadilho com o nome de um dos filmes e a quantidade exorbitante de prêmios que esse filme ganhou.


\(\color{green}{\text{Grupo 5 (BlockBusters):}}\) Filmes em que Jack atuou que os críticos não gostaram lá muito mas que excederam em bilheteria, com uma arrecadação girando na casa da centena de milhões de dólares. O termo BlockBuster é usualmente dado a filmes que lotam as salas de cinema, que é o caso dos filmes pertencentes a esse grupo.




Filme-exemplo de cada grupo


\(\color{#16A085}{\text{Grupo 1 (Oddball):}}\)

  • Stronger: Filme biográfico sobre ‘Jeff Bauman’, vítima do atentado de Boston que perdeu ambas as pernas na explosão. O filme foi muito bem recebido pelos críticos que o elogiaram por ser bem executado, comovente e por focar numa história de superação ao invés de usar a tragédia para alimentar a paranóia em cima do terrorismo. O filme porém foi um fracasso em termos de bilheteria.


\(\color{#CF5300}{\text{Grupo 2 (Sessão da Tarde):}}\)

  • Life: Filme no gênero ficção científica espacial, teve um arrecadamento não muito expressivo assim como críticas igualmente pouco entusiasmadas. Foi considerado por muitos bem executados porém pouco inovativo.


\(\color{#7C3F7C}{\text{Grupo 3 (Demolition of a budget):}}\)

  • Demolition: Neste filme Jake atua no papel de um homem que volta ao trabalho depois de perder a esposa e encontra contato humano em uma atendente de telemarketing ao reclamar de uma vending machine. O filme foi um fracasso em termos de arrecadamento assim como em termos de crítica. O filme teve seu script apontado como grande problema, esse foi descrito como ‘tentando afetar profundidade’ e anti-carismático.


\(\color{magenta}{\text{Grupo 4 (Broke Records and Awards):}}\)

  • Brokeback Mountain: Provavelmente a melhor atuação de Jake Gyllenhaal até o momento, esse filme rendeu a Jake uma indicação ao Oscar e levantou muita controvérsia por conter uma cena de sexo entre pessoas do mesmo sexo. A Academia (responsável por escolher os vencedores do Oscar) foi acusada de homofobia por não escolher esse filme como o ganhador de Melhor Fotografia, ainda assim Brokeback Mountain ganhou outros 141 prêmios e 128 nominações de acordo com o IMDB. O filme foi considerado um sucesso tanto em faturamento como em avaliação.


\(\color{green}{\text{Grupo 5 (BlockBusters):}}\)

  • Prince of Persia: The Sands of Time: Baseado no jogo de mesmo nome, jogo que ainda é pra muitos uma referência em qualidade e inovação. O filme resultou em comentários decepcionados tanto de críticos e fãs, os quais curiosamente não falharam em contribuir pro arrecadamento do filme.